package com.shift.sdk.dialog;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.shift.sdk.PicturePreview;
import com.shift.sdk.R;

/**
 * 画像選択ダイアログクラス.
 *
 * @author SHIFT
 */
public class SelectDialog extends AlertDialog.Builder {

    /**
     * コンテキスト.
     */
    private Context context;

    /**
     * アラートダイアログのインスタンス.
     */
    private AlertDialog dialog;

    /**
     * コンストラクタ.
     *
     * @param context
     */
    public SelectDialog(Context context) {
        super(context);
        this.context = context;
        createView();
    }

    /**
     * ダイアログ生成.
     */
    @Override
    public AlertDialog create() {
        // 自クラス内でdismissメソッドを使用する為、クラス変数に保持する
        dialog = super.create();
        return dialog;
    }

    /**
     * View生成処理.
     */
    private void createView() {

        // ディスプレイサイズよりダイアログサイズを求める
        DisplayMetrics metrics = context.getResources().getDisplayMetrics();
        int dialogWidth = (int) (metrics.widthPixels * 0.8);

        // レイアウトXMLよりViewを生成
        LayoutInflater inflater = LayoutInflater.from(context);
        final View v = inflater.inflate(R.layout.select, null);

        // タイトル
        TextView title = (TextView) v.findViewById(R.id.text_title);
        title.setWidth(dialogWidth);

        Button selectButton = (Button) v.findViewById(R.id.button_galley);
        selectButton.setText("ギャラリーから選択");
        selectButton.setOnClickListener(new OnClickListenerForSelect());

        Button cameraButton = (Button) v.findViewById(R.id.button_camera);
        cameraButton.setText("カメラ撮影");
        cameraButton.setOnClickListener(new OnClickListenerForCamera());

        setNegativeButton("キャンセル", null);
        setView(v);
    }

    /**
     * ギャラリーから選択ボタン押下時の処理.
     */
    private class OnClickListenerForSelect implements View.OnClickListener {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_PICK);
            intent.setType("image/*");
            ((Activity) context).startActivityForResult(intent, 0);
            dialog.dismiss();
        }
    }

    /**
     * カメラ撮影ボタン押下時の処理
     */
    private class OnClickListenerForCamera implements View.OnClickListener {

        @Override
        public void onClick(View v) {

            PicturePreview baseView = (PicturePreview) ((Activity) context)
                    .findViewById(R.id.image_camera);
            baseView.setVisibility(View.VISIBLE);

            TextView text = (TextView) ((Activity) context).findViewById(R.id.image_empty);
            text.setVisibility(View.GONE);
            dialog.dismiss();
        }
    }
}
